import java.util.Scanner;

class NGuessNumber {
    Scanner sc =new Scanner(System.in);
    static int answer [] = new int[4];
    static int[] guess = new int[4];
    public static void main(String[] args) {
        NGuessNumber ngn =new NGuessNumber();
        System.out.println("请输入4个0~9之间不重复的整数(共有7次机会)");
        Scanner sc =new Scanner(System.in);
        String sf;
        do{
            ngn.generateAnswer ();
           // ngn.p();
            int cs=7,c1=6;
            while (cs!=0){
                int A=0,B=0;
                try {
                    ngn.getPlayerInput();
                }catch (Exception e){
                    System.out.println("请输入4个0~9之间不重复的整数");
                    sc.next();
                    continue;
                }
                for (int i=0;i<4;i++){
                    if (answer[i]==guess[i]){
                        A++;
                    }
                }
                for (int i=0;i<4;i++){
                    for (int j=0;j<4;j++){
                        if (i==j){
                            continue;
                        }else {
                            if (answer[i]==guess[j]){
                                B++;
                            }
                        }
                    }
                }
                if (A==4){
                    System.out.println("猜对了");
                    break;
                }else {
                    System.out.println(A+"A"+" "+B+"B"+"还有"+c1+"次机会");
                }
                System.out.println("A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！" +
                        "如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。");
                cs--;
                c1--;
            }
            if (cs==0){
                System.out.println("超过7次游戏失败,是否继续游戏(y/n)");
            }
            System.out.println("是否重新游戏(y/n)");
            sf= sc.next();
        }while (sf.equalsIgnoreCase("y"));
    }
    public void   generateAnswer () {
        int i=0;
        while (i<4) {
            int candidate= (int) (Math.random() * 10);
            boolean hasDuplicate = false;
            for (int j=0;j<i;j++){
                if (answer[j]==candidate){
                    hasDuplicate=true;
                    break;
                }  }
            if (hasDuplicate){ continue; }
            else {
                answer[i]=candidate;
                i=i+1;
            } } }
//    public void p(){
//        for (int i=0;i<4;i++){
//            System.out.print(answer[i]);
//        }
//    }
    //接收玩家输入的4个数字并返回。
    public void getPlayerInput(){
        for (int i=0;i<4;i++){
            guess[i]=sc.nextInt();
        }
    }
    //比较玩家猜测和答案后返回提示信息
    public void compareGuessAnswer(){

    }
    //根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false。
    public void isWin(){

    }
}